package Day9.内部类.成员内部类;

import java.io.OutputStream;

/**
 * @Author kalista
 * @Description 成员内部类
 * @Date 2020/11/13  14:57
 **/
//外部类
public class Outer {

    private int outerVariable = 1;
    private int commonVariable = 2;
    private static int ourterStaticVariable = 3;

    //省略getter   setter方法

    /*
     *成员方法
     */

    public void outerMethod(){
        System.out.println("我是外部outerMethod方法");
    }
    public static void outerStaticMethod(){
        System.out.println("我是外部静态outerStaticMethod方法");
    }

    // 内部类
    public class Inner{

        private int commonVariable = 20;

        public Inner() {
        }

        //成员方法 访问外部类的信息(属性  方法)
        public void innerShow(){
            //当和外部类冲突时,直接引用的属性名时内部类的成员属性
            System.out.println("内部类的commoneVariable" + commonVariable);
            //内部类访问外部类属性
            System.out.println("outerVariable" + outerVariable);
            //当外部类和内部类的成员变量的名字相同的时候. 我门可以通过  外部类的名字.this.属性名
            System.out.println("外部的commoneVariable" + Outer.this.commonVariable);
            System.out.println("outerStaticVariable" + ourterStaticVariable);

            outerMethod();
            outerStaticMethod();

        }
    }


    public static void main(String[] args) {
        //外部类类对象
        Outer outer = new Outer();
        //创造内部类
        Inner inner = outer.new Inner();
        inner.innerShow();

    }
}
